Digital penmanship

ABSTRACT

A method of altering the depiction of digital text input by a user, including: receiving a set of keystrokes on a keyboard input by the user, the set of keystrokes including a plurality of text characters configured to be rendered on a display in communication with the keyboard; determining a keystroke dynamics of the user based on the set of keystrokes, the keystroke dynamics including time-of-flight data and dwell time data for each keystroke of the set of keystrokes; analyzing the set of keystrokes with the keystroke dynamics to determine the hand dominance of the user and to generate a keystroke score for each keystroke of the set of keystrokes; altering at least a portion of the text characters based on the analysis of the set of keystrokes with the keystroke dynamics; and rendering the at least partially altered text characters on the display.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims the priority benefit of U.S. Provisional PatentApplication No. 63/327,090, filed Apr. 4, 2022, and International PatentApplication No. PCT/US2022/022756, filed Mar. 31, 2022, which claimedthe priority benefit of U.S. Provisional Patent Application No.63/168,516, filed Mar. 31, 2021, the contents of which are incorporatedby reference as if disclosed herein in their entireties.

FIELD

The present technology generally relates to the area of keystrokedynamics, and more particularly, to systems and methods of using avariable font make real-time alterations to the depiction of digitaltext input by a user based on the user's keystroke dynamics.

BACKGROUND

Traditional forms of digital non-verbal communication, such as sendingdigital text messages, posting in social media platforms, etc., areunable to properly convey the innate non-verbal connotations of anindividual's messages. For example, traditional means of typing andsending a message lack a means of effectively communicating the sender'svocal cues (e.g., cadence, volume, intonation, etc.) and body language(e.g., hand gestures, facial expressions, stance, etc.) that wouldindicate the sender's emotions underlying the message. This results inthe frequent miscommunication found in digital communications. Althoughemojis represent the closest current solution to this problem, emojisinefficiently require additional text input and still lack the innatenon-verbal connotations of an individual's message.

What is needed, therefore, is an improved system and method ofpresenting digitally typed text that addresses the problems describedabove.

SUMMARY

According to an embodiment of the present technology, a method ofaltering the depiction of digital text input by a user is provided. Themethod includes the steps of: receiving a set of keystrokes on akeyboard input by the user, the set of keystrokes including a pluralityof text characters configured to be rendered on a display incommunication with the keyboard; determining a keystroke dynamics of theuser based on the set of keystrokes, the keystroke dynamics includingtime-of-flight data and dwell time data for each keystroke of the set ofkeystrokes; analyzing the set of keystrokes with the keystroke dynamicsto determine the hand dominance of the user and to generate a keystrokescore for each keystroke of the set of keystrokes; altering at least aportion of the text characters based on the analysis of the set ofkeystrokes with the keystroke dynamics; and rendering the at leastpartially altered text characters on the display.

In some embodiments, determining the hand dominance of the user includescalculating a ratio of actual overlapping keystrokes to potentialoverlapping keystrokes for the left hand and the right hand of the user.

In some embodiments, the actual overlapping keystrokes are based, atleast in part, on the time-of-flight data.

In some embodiments, the potential overlapping keystrokes are based, atleast in part, on a series of di-graphs for sequential keystrokes.

In some embodiments, the potential overlapping keystrokes are based, atleast in part, on a series of tri-graphs for sequential keystrokes.

In some embodiments, determining the actual overlapping keystrokes andthe potential overlapping keystrokes includes: determining, for eachkeystroke, if the keystroke is in a left-hand location, a right-handlocation, or a middle location of the keyboard; recording a potentialoverlap if the keystroke is in the left-hand location or the right-handlocation and the preceding keystroke is in the same location;determining, if a potential overlap was recorded, if an active keypresslist has a value greater than one; and recording an actual overlap ifthe active keypress list has a value greater than one and no releasetime.

In some embodiments, the keystroke score for each keystroke of the setof keystrokes is based, at least in part, on a combination of di-graphsand tri-graphs.

In some embodiments, the keystroke score for each keystroke of the setof keystrokes is based, at least in part, on the typing speed of theuser.

In some embodiments, generating the keystroke score for each keystrokeof the set of keystrokes includes: capturing, for each keystroke, apress time; and performing a weight mapping function on each keystrokeand its respective press time to determine the outputted typeface weightof each keystroke.

In some embodiments, the weight mapping function includes: analyzingeach keystroke to determine if a lapse in typing occurred; resetting, ifa lapse in typing is detecting, a press time of the first keystroke in asequence of keystrokes of the set of keystrokes to when the lapseoccurred and resetting a total number of keystrokes in the sequence ofkeystrokes to one; calculating a global typing speed of the user for theset of keystrokes; calculating a local typing speed of the user for thesequence of keystrokes; calculating individual typing speeds of the userfor each keystroke; generating an overall typing speed of the userbased, at least in part, on the global typing speed, the local typingspeed, and the individual typing speeds; and determining the outputtingtypeface weight of each keystroke based, at least in part, on theoverall typing speed.

In some embodiments, the global typing speed includes an average typingspeed for the set of keystrokes, a variance in typing speeds for the setof keystrokes, and a current typing speed.

In some embodiments, the local typing speed includes an average typingspeed for the sequence of keystrokes, a variance in typing speeds forthe sequence of keystrokes, and a current typing speed.

In some embodiments, each individual typing speed includes an averagetyping speed for all instances that each keystroke was pressed, avariance in the typing speeds for all instances that each keystroke waspressed, and a current typing speed.

In some embodiments, the keystroke score for each keystroke of the setof keystrokes is based, at least in part, on the dwell time of eachkeystroke.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics further includes determining a custom interpolation axis. Insome embodiments, the custom interpolation axis includes a charactergrade axis configured to change the font weight of the text characterswithout changing the font width of the text characters.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics further includes determining at least one of font size ofkerning of the text characters.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics further includes determining font variation settings of thetext characters.

In some embodiments, the text characters are altered and displayed inreal-time as the user inputs the keystrokes.

According to another embodiment of the present technology, a system foraltering the depiction of digital text input by a user is provided. Thesystem includes a keyboard that is configured to receive a set ofkeystrokes input by the user. A processor is in communication with thekeyboard. The processor is configured to receive signals representingthe set of keystrokes from the keyboard and perform the method describedabove via a variable font algorithm. A display is in communication withthe processor for rendering the at least partially altered textcharacters.

According to an alternative embodiment of the present technology, amethod of altering the depiction of digital text input by a user isprovided. The method includes the steps of: receiving a set ofkeystrokes on a keyboard input by the user, the set of keystrokescomprising a plurality of text characters configured to be rendered on adisplay in communication with the keyboard; determining a keystrokedynamics of the user based on the set of keystrokes; analyzing the setof keystrokes with the keystroke dynamics; altering at least a portionof the text characters based on the analysis of the set of keystrokeswith the keystroke dynamics; and rendering the at least partiallyaltered text characters on the display.

In some embodiments, determining the keystroke dynamics includesanalyzing at least one keystroke factor.

In some embodiments, the at least one keystroke factor includestime-of-flight, time-of-flight being the time between consecutivekeystrokes of the set of keystrokes. In some embodiments, the at leastone keystroke factor includes dwell time, dwell time being the durationof a keystroke of the set of keystrokes.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes determining a font variability axis based on textcharacter weight, text character width, and text character slant.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes determining an optical size at which to render thetext characters.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes determining a custom interpolation axis. In someembodiments, the interpolation axis includes a character grade axisconfigured to change the font weight of the text characters withoutchanging the font width of the text characters.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes determining a plurality of font parameters of the textcharacters. In some embodiments, the plurality of font parametersincludes front size and kerning.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes determining font variation settings of the textcharacters.

In some embodiments, analyzing the set of keystrokes with the keystrokedynamics includes calculating font interpolation of the text charactersvia polynomial regression, rate of change, and tangency calculations.

In some embodiments, the polynomial regression calculation includes thesteps of: calculating time-of-flight data including time-of-flightvalues for each keystroke of the set of keystrokes; logging thetime-of-flight data; arranging, via a function, the time-of-flight datain order from least to greatest based on their respective values; andcalculating, via a logarithmic regression, an equation of the curve ofbest fit for the arranged time-of-flight data.

In some embodiments, the equation of the curve of best fit is updatedfor the first 200 keystrokes of the set of keystrokes and is furtherupdated at an exponential rate for keystrokes after the first 200keystrokes.

In some embodiments, the rate of change calculation comprises the slopeintercept formula, y=mx+b and f′(x)=the equation of the curve of bestfit for the arranged time-of-flight data.

In some embodiments, for each keystroke inputted by the user the rate ofchange calculation includes the steps of: finding the inverse of theequation of the curve of best fit for the arranged time-of-flight data;solving for x of the slope intercept formula when y is equal to thetime-of-flight of the current keystroke; finding f′(x); finding theinverse of f′(x); solving f′(x)=0 to determine critical points of thecurve of best fit; finding f′(x); evaluating f′(x) for when x is equalto the critical points of the curve of best fit; and solving f′(x) withx equal to the time-of-flight of the current keystroke to determine thevalue of the slope at the current keystroke.

In some embodiments, the tangency calculation includes determining atangent line for the curve at the current keystroke.

In some embodiments, calculating font interpolation of the textcharacters of the set of keystrokes determines font interpolation dataincluding rate of change, slope minimum, slope maximum, position of thetime-of-flight value of each keystroke in the range of thetime-of-flight data, time-of-flight data minimum, time-of-flight datamaximum, and time-of-flight value frequency.

In some embodiments, the step of altering at least a portion of the textcharacters is based on the font interpolation data.

In some embodiments, the text characters are altered and displayed inreal-time as the user inputs the keystrokes.

According to another embodiment of the present technology, a system foraltering the depiction of digital text input by a user is provided. Thesystem includes a keyboard that is configured to receive a set ofkeystrokes input by the user. A processor is in communication with thekeyboard. The processor is configured to receive signals representingthe set of keystrokes from the keyboard and perform the method describedabove via a variable font algorithm. A display is in communication withthe processor for rendering the at least partially altered textcharacters.

In some embodiments, the keyboard, the processor, and the display areintegrated together in a computing device.

In some embodiments, the keyboard and the display are integratedtogether in a computing device, and the processor is located in a serverin communication with the computing device via a communication network.In some embodiments, the communication network is a wireless network.

In some embodiments, at least one external display is in communicationwith the server via the communication network. The at least one externaldisplay is configured to render the at least partially altered textcharacters.

Further objects, aspects, features, and embodiments of the presenttechnology will be apparent from the drawing figures and belowdescription.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a flowchart showing the method steps of altering the depictionof digital text input by a user via a variable font algorithm accordingto an exemplary embodiment of the present technology.

FIG. 2 shows pseudocode for determining a font variability axisaccording to an exemplary embodiment of the present technology.

FIG. 3 shows pseudocode for determining an optical size for rending thetext characters according to an exemplary embodiment of the presenttechnology.

FIG. 4 shows pseudocode for determining a custom interpolation axisaccording to an exemplary embodiment of the present technology.

FIG. 5 shows pseudocode for determining the kerning font parameteraccording to an exemplary embodiment of the present technology.

FIG. 6 shows pseudocode for determining the font variation settingsaccording to an exemplary embodiment of the present technology.

FIG. 7 is a schematic showing a digital variable font system accordingto an exemplary embodiment of the present technology.

FIG. 8 is a schematic showing a digital variable font system accordingto an exemplary embodiment of the present technology.

FIG. 9 shows a rendering of digital text input as at least partiallyaltered via a variable font algorithm according to an exemplaryembodiment of the present technology.

FIG. 10 shows an exemplary keystroke di-graph.

FIG. 11 shows an exemplary keystroke tri-graph.

DETAILED DESCRIPTION

Embodiments of the present technology are directed to a digital variablefont that responds to a user's keystroke dynamics (e.g., biometrics). Insome embodiments, the present technology uses variable fonts to ensure aseamless application across multiple devices. Research in cyber securityand human computer interaction has found that each individual has theirown unique keystroke pattern, similar to how individuals have their ownunique penmanship, and that this keystroke pattern can be used to verifyor identify an individual's identity. Embodiments of the presenttechnology are directed to systems and methods of mapping a user'skeystroke dynamics and altering the depiction of each individualcharacter based on the user's input. The present technology has utilityin text-based communication platforms and addresses the loss ofnon-verbal communication within text-based many-to-many communicationplatforms (i.e., social media platforms).

FIG. 1 is a flowchart showing the steps of a digital variable fontmethod 10 (i.e., a method of altering the depiction of digital textinput by a user) according to an exemplary embodiment of the presenttechnology. In step 20, the method 10 includes receiving a set ofkeystrokes input by a user on a keyboard. The set of keystrokesrepresents a plurality of text characters desired by the user to berendered on a display that is in communication with the keyboard. Insome embodiments, the keyboard is a virtual keyboard, and the keyboardand the display are integrated together as part of a computing device,such as a smartphone, tablet, etc. In some embodiments, the keyboard isa physical keyboard, and the keyboard and the display are separatecomponents of a computing device, such as desktop computer, laptopcomputer, etc.

Some embodiments of the present technology use keystroke dynamics (e.g.,biometrics) as a variable font interpolator. For example, as shown inFIG. 1 , step 30 of the method 10 includes determining a keystrokedynamics of the user based on the set of keystrokes. In someembodiments, determining the keystroke dynamics includes accounting for,or analyzing, one or more keystroke factors. In some embodiments, thekeystroke factors includes one or more of time-of-flight (“TOF”) anddwell time. TOF is the time between individual keystrokes. A negativeTOF is indicative of two or more keys being pressed at the same time(i.e., simultaneous keystrokes). Dwell time is the duration for which akey is pressed down (i.e., the keystroke period).

In step 40, the method 10 includes analyzing the set of keystrokes withthe keystroke dynamics, as shown in FIG. 1 . In some embodiments,analyzing the set of keystrokes includes determining a font variabilityaxis based on text character weight, text character width, and textcharacter slant. FIG. 2 shows pseudocode for determining a fontvariability axis according to an exemplary embodiment of the presenttechnology.

In some embodiments, analyzing the set of keystrokes includes usingoptical sizing to determine how to render the text characters. By usingoptical sizing, a typeface can be rendered very small (e.g., a 12pxfootnote) or very large (e.g., an 80px headline). Fonts respond to thesesize changes by changing its letter shapes to better suit its size. Asmall size might be better off without fine details, while a large sizemight benefit from more details and thinner strokes. In someembodiments, the default for the font is auto, which means the algorithmanalyzing the set of keystrokes (e.g., an algorithm operating locally ona user's computing device via a processor, an algorithm operatingremotely via a server in communication with the user's computing device,an algorithm operating via an internet browser, etc.) will pick the bestoptical sizing for the font-size at which the characters are beingrendered. In some embodiments, optical sizing allows a user to definetheir own optical sizing regardless of the size at which the font isbeing rendered. FIG. 3 shows pseudocode for determining an optical sizefor rending the text characters according to an exemplary embodiment ofthe present technology.

In some embodiments, analyzing the set of keystrokes includesdetermining a custom interpolation axis. In some embodiments, the custominterpolation axis is a character grade axis that is configured tochange the weight of the font of the text characters without changingthe width of the font of the text characters such that line breaks donot change. By adjusting the character grade axis, embodiments of thepresent technology avoid being forced to make changes to the font weightaxis that affect the overall font width, and then make changes to thefont width axis that affect the overall font weight. FIG. 4 showspseudocode for determining a character grade axis (“GRAD”) according toan exemplary embodiment of the present technology. As GRAD is a customfont variation setting, the interpolation points are first defined, asshown in FIG. 4 . Further details of the font variation settings arediscussed below with reference to FIG. 6 .

In some embodiments, analyzing the set of keystrokes includesdetermining a plurality of font parameters. In some embodiments, thefont parameters includes font size and kerning. Kerning is the spacebetween the individual, consecutive, adjacent text characters. FIG. 5shows pseudocode for determining the kerning font parameter according toan exemplary embodiment of the present technology.

In some embodiments, analyzing the set of keystrokes includesdetermining font variation settings of the text characters.Traditionally, font variation settings are not inherited. For example,it an html component has two IDs, where one defines the slant and theother defines the GRAD, then only the parameter of the second ID will berendered. Embodiments of the present technology overcome this limitationby using CSS variables. FIG. 6 shows pseudocode for determining the fontvariation settings according to an exemplary embodiment of the presenttechnology.

In some embodiments, analyzing the set of keystrokes includescalculating font interpolation of the text characters through polynomialregression, rate of change, and tangency calculations. Regardingpolynomial regression, a TOF value for each keystroke is preferablycalculated, logged, and passed to a function that reorders the valuesfrom least to greatest. A logarithmic regression is performed tocalculate the equation of the curve of best fit for the ordered TOF dataas if it were to be graphed. This equation is preferably updated for thefirst 200 keystrokes of the set of keystrokes, and then the rate atwhich it is further updated is increased exponentially for keystrokesafter the first 200 keystrokes of the set of keystrokes.

Regarding the rate of change calculations, embodiments use the slopeintercept formula, y=mx+b, and f′(x)=the equation of the curve of bestfit that was outputted by the logarithmic regression function. In someembodiments, the steps outlined below are executed each time a userpresses a key (i.e., inputs a keystroke):

-   -   1. Find the inverse of the equation for the curve of best fit        that was outputted by the logarithmic regression function;    -   2. Solve for x when y is equal to the current TOF value for        determining where that TOF value falls in the range of the TOF        data;    -   3. Find f′(x) (i.e., the derivative of the function f′(x));    -   4. Find the inverse of f′(x) to account for situations when the        algorithm cannot solve for x when y=0;    -   5. Solve f′(x)=0 to determine the critical points, such as        points where a potential maximum and minimum exist, which values        are necessary for mapping the slope to the font attributes, as        discussed below. Evaluating x when y=0 is also used to determine        inflection points;    -   6. Find f′(x) (i.e., the second derivative of the function        f′(x)) to find concavity and verify whether the critical points        are maximums, minimums, or inflection points;    -   7. Solve f′(x) for x=(f′(x)=0) (i.e., evaluate f′(x) for when x        is equal to the critical points; and    -   8. Plug x value of the indicated point into f′(x) to find the        slope at x for determining the value of the slope at the point        in question.

Each time a user presses a key, the series of steps outlined above isexecuted, evaluating the TOF value using the equation that was outputtedby the logarithmic regression to determine the rate of change (slope) atthe point where the current TOF value falls on the graph of the TOFdata. Here, y is where the TOF value falls in the ordered list of TOFdata for the keystrokes. When evaluated, y will be some number between 0and the total number of TOF values that were included when performingthe polynomial regression that generated the equation.

Some embodiments account for TOF value frequency. For example, if a TOFvalue exists multiple times in the data set, then the equation willreturn a decimal that is the average of all the positions that that TOFvalue exists. If a TOF value does not exist in the data set, then theequation will return a number that is representative of the two valuesthat the TOF value falls between, where the integer is the lower valueof the two, and the decimal point that follows the integer isproportionate to the position of the TOF value in the range between thetwo existing values. At this point, the following have been determined:the TOF value for the last-entered keystroke; the position of that TOFvalue in the ordered list of TOF data that was used to generate theequation for the best fit curve of the data; and the equation for thecurve of beset fit.

In some embodiments, to determine the rate of change of the curve, thetangent line for the curve at the point in question is determined. Atangent line is a straight line that touches a curve at an individualpoint. It is important to note that even though the tangent touches thecurve, it does not ever cross through the curve. The point where atangent line meets a curve is referred to as the point of tangency. Theslope of the curve, y=f′(x) at the point in question is equal to the yvalue that is outputted when the derivative is evaluated for f′(x)=TOFand slope is the rate of change.

In some embodiments, to generate the tangent of the curve, thederivative of the equation is determined to then evaluate it with thepre-defined x value and calculate the gradient. Preferably, the equationto generate is: y−y1=m(x−x1), where m is equal to the gradient and y1and x1 are equal to x and y, respectively, as determined above for therate of change calculation. This equation is used to determine theequation for the tangent of the curve. This equation is in point slopeform. At this point, the following has been determined:

y1=f(xTOF);x1=xTOF;gradient=f{circumflex over ( )}(−1)(xTOF)[thederivative of the function]

Equation for the tangent of the curve at point(xTOF,yTOF)var tanEQ=(m*x)−(m*x1)+y1);

After the above font interpolation calculations are run, the followingfont interpolation data are returned: rate of change (“ROC”); slopeminimum; slope maximum; position of the TOF value in the range of TOFdata; data minimum (TOF, 0); data maximum (TOF, Y-position); and TOFvalue frequency. This information is then used to determine the valuesused to directly manipulate the rendering of the font, as discussedbelow.

In some embodiments, analyzing the set of keystrokes includesdetermining the hand dominance of the user. Hand dominance is calculatedusing the ratio of actual versus possible overlapping keystrokes for theleft and right hand. Key location was determined using the Qwertykeyboard. Careful consideration was given to diversity of typing styleswhen determining hand mapping values. Keys ‘q’, ‘w’, ‘e’, ‘a’, ‘s’, ‘d’,‘z’, ‘x’, and ‘c’ were designated to the left hand. Keys ‘u’, ‘o’, ‘p’,‘h’, ‘k’, ‘l’, ‘n’, and ‘m’ were designated to the right hand. Theremaining keys—‘r’, ‘t’, ‘y’, ‘g’, ‘v’, and ‘b’—were assigned neitherleft nor right hand because they were in the center of the keyboard andcould be pressed by either the right or left hands.

In some embodiments, keyboard instances were determined using a seriesof di-graphs, sequential keystrokes. FIG. 10 shows an example of akeystroke di-graph. Each time a key is pressed, its location istemporarily stored in the application. If the current keystroke'slocation is the same as the previous key's location, then it isregistered as a potential instance for same hand overlapping strokes.Each time a potential instance is registered, it increases the PotentialInstance Score (PIS) for the registered hand by one. In someembodiments, TOF is used to determine the Actual Instance Score (AIS).As previously mentioned, TOF is the difference between when key1 isreleased and key2 is pressed. A negative TOF is indicative of two keysbeing in the down position at the same time. While TOF is a valuablemetric, the release time from the first key is calculated. However, iftwo keys are both in the down state, then the release time of the firstkey is unavailable.

Some embodiments use alternative solutions to determine if two keys werepressed at the same time. One alternative embodiment adds and removes akey from a list when it was pressed and released, respectively. Usingthis methodology, when a key is pressed, if the list length is greaterthan one then that means that two keys are in the down state. While thismethodology provides a distinct answer regarding whether two keys arebeing pressed at the same time, it makes the assumption that only twosequential keys can be pressed down at the same time. The usage oftri-graphs in keystroke feature extraction shows that this is not thecase. FIG. 11 shows an example of a keystroke tri-graph. Using thismethodology will provide the correct answer the majority of the time,however it is not absolute.

Another alternative embodiment checks to see if the release time for theprior key exists, and if it does not exist then it assumes it is stillpressed. Logically this methodology should always return the correctvalue, however, to ensure that the lack of release time is not resultantfrom an error somewhere else in the code, some embodiments combine thismethodology with the previous one. The new resulting methodology is thefollowing:

-   -   1. A key is pressed by the individual triggering an event;    -   2. The system registers the value of the key that was pressed        and determines its location;    -   3. If the value is in middle, meaning it is neither left- nor        right-hand, then the function returns a no-potential-overlap        value and is concluded. If the pressed key is assigned either a        left or right hand for its location value, then the system looks        to see what the location value was for the prior key press. If        the prior key location matches the current key location, then a        potential instance is recorded for that location. If the values        do not match, then the function returns a no-potential-overlap        value and is concluded;    -   4. If a potential instance was recorded, then the system checks        the active keypress list. If the length is greater than one,        then there is a high likelihood that two keys are pressed. If        the value is less than two, then there is only one key pressed        at a time, and the system returns a no-overlap-present value and        is concluded; and    -   5. If the key locations match and the keypress list is greater        than one, then the function checks to see if the prior keypress        has a release time. If it does have a release time, then the        system returns a no-overlap-present value and is concluded. If        it does not have a release time, then an actual overlap value is        recorded for the key location.

After each keypress has occurred and the function has determined ifthere was an overlap, then the proportion of AIS to PIS is calculatedfor each hand: AIS/PIS. The resulting value should be some numberbetween zero and one. The ratio of left hand to right hand is thendetermined. This process yields the following: 1) if there is one-handthat is more dominant than the other; 2) if there is a dominant hand,which hand is it.

To determine the direction of dominance a range is established where theleft most value signifies the left hand and the right most valuesignifies the right hand. No dominance is indicated by a value directlyin the center of the left and right values. Some embodiments negate theleft hand's values, which creates a range from −1 to 1, where 0represents an individual whose hands are equally weighted. The distanceof the value from zero is representative of the strength of thedominance. The value of the resulting dominance can be calculated byadding the negated left-hand values (subtracting it) from the right-handvalue. The number remaining will be some value between −1 and 1 that isindicative of the individual's hand dominance.

In some embodiments, to apply the resulting value to the renderedcharacter, the resulted values are mapped to the slant property of thevariable font. This will be a one-to-one relationship where −1 to 1 willbe mapped to the maximum and minimum values for the variable fonts slantaxis. Some embodiments use a linear mapping function.

In some embodiments, analyzing the set of keystrokes includes generatinga keystroke score for each keystroke of the set of keystrokes usingdynamic scaling. Dynamic scaling uses a combination of di-graphs andtri-graphs to generate a ‘Keystroke Score’ for each keypress that a usermakes. The ‘Keystroke Score’ is built using a ‘scoring model.’ Anexample of a known scoring model is the FICO score used by companies toassess the financial health of an individual. Using the scoring model asa framework, multiple keystroke features can be combined to generate asystem that is sensitive to changes, but also balanced in how drasticthose changes appear in the output. This high sensitivity with built-insmoothing makes this mapping methodology an ideal choice forinterpolating font weight.

“Keystroke Score” is centered around the user's typing speed, but itfocuses on different ways of capturing speed within keystroke biometricsand where variances in speed might exist. The mapping process istriggered each time a key is pressed. The process begins by capturingthe ‘press time’ for the current keystroke. Once the press time has beenrecorded it is passed along with the key value to the weight mappingfunction. The weight mapping function is responsible for taking thepress time and key value and returning the outputted typeface weight.

In some embodiments, at the start of the weight function the keypressinstance is analyzed to determine if a lapse in typing had occurred. Alapse in typing can be defined as a period of time where the user pausestheir typing for an unknown reason that is irrelevant to their recordedtyping biometrics. Checking for lapses in keystrokes is used to minimizethe amount of inaccurate data existing within the system. A lapse intyping is calculated by subtracting the current press time from theprevious press time. If the passed time is greater than a predeterminedtime, a lapse is said to have occurred. The time that passes betweenpress times is referred to as the interval or the release-press time inkeystroke biometrics. If a lapse is detected, then a reset will occurcausing the start value to be reset to the moment when the lapse wastriggered, and the number of keys pressed value will start back at one.

Within the “Keystroke Score” there are three categories that arecalculated for local (tri-graph), global (overall), and individual(di-graph) scores. Each of these values impact the outputted weightvalue, however the amount of impact varies.

In some embodiments, the user's typing speed is calculated using thefollowing equation:

$\begin{matrix}\frac{T_{Curr} - T_{Start}}{TotalKeys} & (1)\end{matrix}$

Where T_(Curr) is the current key's press time; T_(Start) is the presstime of the first key in the sequence; and TotalKeys is the total numberof keys in the given sequence. T_(Curr) will remain constant between thethree different values—global, local, and individual—but T_(Start) andTotalKeys will vary. Once speed has been calculated it is stored withinan array that contains all of the speeds that have been recorded duringthe current session.

In some embodiments, there are three components that factor into theglobal score: average speed for all key presses, variance in speeds forall key presses, and current speed. For each of these values, the valuesare mapped to a predetermined range, using the maximum and minimumvalues within the data sets. After mapping each parameter, the valuesare added up and mapped to the allotted global range, which isrepresentative of the part of the whole that is made up of the globalscore. For the global score, T_(Start) is the recorded start time, whichis either the start of the typing session or when the lapse wasrecorded; and TotalKeys is the number of keys pressed since the start ofthe session or it is the number of keys pressed since the last lapse inkeystrokes.

In some embodiments, there are three components that factor into thelocal score: average speed for the sequence, variance in speeds withinthe sequence, and current speed. For each of these values, the valuesare mapped to a predetermined range, using the maximum and minimumvalues within the data sets. After mapping each parameter, the valuesare added up and mapped to the allotted local range, which isrepresentative of the part of the whole that is made up of the localscore. For the local score, T_(Start) is the recorded start time, whichis either the press time of the first key in the tri-graph or, if therehas not been three consecutive keystrokes, it is the first key in thenew sequence; and TotalKeys is either three or if there has not beenthree consecutive keystrokes then the number is the quantity ofkeystrokes there have been, the number of keys pressed since the startof the session, or it is the amount of keys pressed since the last lapsein keystrokes.

In some embodiments, there are three components that factor into theindividual key score: average speed for all instances that the key waspressed, variance in speeds among instances where the key was pressed,and current speed. However, they are only being considered in respect tothe other instances where that key was pressed. In addition, if a keyhas only been pressed one time, then the value is added to the array,but there is not an individual score that exists. Instead, the mappingranges adjust accordingly. If a key has been pressed more than one time,then the average, variance, and current speed is considered in respectto the previous instances. For each of these values, the values aremapped to a predetermined range, using the maximum and minimum valueswithin the data sets. After mapping each parameter, the values are addedup and mapped to the allotted individual key range.

After calculating each of the different areas of the score, the valuesare added up, generating an overall keystroke speed score. The outputtedvalue is then mapped to the weight using the fonts maximum and minimumpotential values and the minimum and maximum possible values for theoutputted Keystroke Scores. The outputted values are representative ofthe weight of the pressed letter.

In some embodiments, the weight mapping function accounts for themulti-dimensional nature of emotions. The circumplex model of affectuses two dimensions to map emotions: valence and arousal. Under thismodel, valence is how pleasurable the emotion is and arousal is theenergy behind it. In some embodiments, a weight mapping issue is thebiproduct of the varying effects that valence and arousal have on auser's keystrokes. For example, emotions that have a higher arousallevel have shorter dwell times, also known as the keystroke duration,when compared to those with lower arousal levels. This can be attributedto energy encompassed within the action. If a person is experiencing anemotion that is higher in arousal, then the emotion is higher in energy.This high energy level is then translated into their keypresses that areshorter in duration because of the greater amount of force being appliedto them. Examples of emotions that are said to be lower in arousal levelare tired or bored.

When it comes to keyboard latency, changes in valence of emotions canimpact keyboard latency, where negative emotions result in slowerkeyboard latency values. In addition, in respect to negative emotions,the fastest keyboard latency values were found for medium arousallevels. For positive emotions that are high in energy the fastestkeyboard latency values were found for the highest arousal levels. Thereto also an effect between the arousal level and the number of errors,where the higher the arousal level the more errors the participantsmake.

In some embodiments, the weight mapping process is indirectly influencedby the dwell time of the keystrokes; however, it is primarily builtusing keystroke latency. It can be assumed that if an emotion ispositive and high energy, then the outputted value for font-weight willbe mapped correctly. However, if the emotion has a negative valence,then stroke duration will map correctly, but keystroke latency will mostlikely not. Therefore, some embodiments employ an alternativecomputational method that isolates the valence and arousal components ofemotion from one-another. This is achieved by focusing solely on thedwell time.

Dwell time is a key factor when assessing the effects of emotions onkeystroke biometrics. To calculate dwell time, the key press time issubtracted from the key release time. Much like time of flight, whichalso has a release time to be calculated, dwell time is ill-suited forreal-time typeface interpolation. For dwell time to be used in real-timecalculations, a predictive model is generated to permit the use of otherkeystroke data and patterns within the user's typing to predict what theoutputted dwell time will be.

In some embodiments, the alternative weight mapping function uses datadistribution mapping and starts by taking in the following parameters:key value, start time, press number (what number press is it in thesequence), release time, pass number (used to control whether thecurrent instance is for rendering text or creating the baselinedistribution), and final (if the current key is the last item in thesequence).

In some embodiments, the weight mapping function starts by running thekeypress through a series of processes to clean up the input data tohelp minimize errors. After ensuring the data is clean, the dwell timeis calculated by subtracting the press time from the release time. Thedwell time is then checked to make sure that it exists before passing itthrough the mapping distribution process, this will help to minimizeerrors and code breaking.

If the current pass is the first pass, meaning it is for building thebaseline, then the key data is passed through a foundation buildfunction that takes in the parameters key name, dwell time, and final.The foundation build function takes in the data that is passed to it anduses it to build an array. The function continues to do this until thevalue of final equals 1, which means that it is true. The foundationbuild then goes through the following steps to build out the baselinedistribution:

-   -   1. Before the data distribution can be generated, it filters out        any outliers that could skew the data and reorder the data set        in order from least to greatest. These removed values are        accounted for later in the rendered font weights;    -   2. Next, quantiles are generated. To do so, the simplified data        point list along with the median value is passed to a quantile        generator function. The quantile generator then takes the median        and the list array of datapoints and uses it to construct two        new arrays of data separated by the median value. The new data        arrays are then returned to the foundation build function;    -   3. Now that the data split in half, each of the halves are used        to generate the quantiles by passing each of the halves through        the quantile generator function;    -   4. Next, maximum and minimum values for each of the quantiles        are stored into an array, this will be used for mapping the new        outputted weight value;    -   5. Account for outliers in the end mapping function, especially        because when it comes to “Digital Penmanship” the outliers are        where the changes in emotions exist. This is done by saving the        minimum value from q1 (quantile 1) and the maximum value of q4        (quantile 4); and    -   6. Once the quantile values are stored, return the information        to the weight calculation function.

After the baseline distribution is generated, the method passes the fulldataset into the weight calculation function, as described below:

-   -   1. Before beginning the mapping process the data is checked to        make sure that there are not any missing dwell time values. If        there are any missing dwell times, then the function returns the        last used weight value. If the dwell time does exist, then the        function proceeds to the next step;    -   2. Next the application runs the dwell time through a series of        if-then statements to determine which quantile the dwell time        belongs in. The data point can exist in one of six areas: lower        bound; quantile 1; quantile 2; quantile 3; quantile 4; and upper        bound;    -   3. Once the quantile for the data point has been identified, it        is passed to the weight mapping function along with the dwell        time value, key that was pressed, quantile minimum value and        quantile maximum value.    -   4. The mapping weight function then uses the quadrant location        to define the minimum and maximum values for that segment and        then passes those values to a linear mapping function.

In some embodiments, the variable font algorithm discussed herein can beapplied to any variable font by assigning a computed value to a specificvariable font axis. In some embodiments, the variable font usedincludes, but are not limited to, Noboto Flex, Pathway Extreme, RobotoFlex, IBM Plex Sans Variable, Recursive, and Space Grotesque Variable.In some embodiments, the variable font used is Grtsk Variable because ofits unique ability to angle letters to the left and right. GrtskVaraible is a variable font that features three variable axes: weight(min and max values), width (min and max values), and slant (min and maxvalues). Although the number of axes that can be manipulated for thefont are limited, it does include the most highly used axis types,weight and width, and it allows for both left and right letter slants.

As shown in FIG. 1 , step 50 of the method 10 includes altering at leasta portion of the text characters based on the analysis of the set ofkeystrokes with the keystroke dynamics. For example, specific textcharacters or words of the set of keystrokes are altered to be renderedin different fonts, different font styles (e.g., bold, italic,underlined, etc.), different font sizes, etc. to effectively convey theuser's innate non-verbal connotations (e.g., cadence, volume,intonation, etc. indicative of the user's emotion, mood, feelings, etc.that the user desired to be expressed through the set of keystrokes)underlying the set of keystrokes based on the user's keystroke dynamics.In step 60, method 10 includes rendering the at least partially alteredtext characters on the display that is in communication with thekeyboard. Preferably, the method 10 occurs in real-time such that thereis no delay, or no noticeable delay (e.g., an input lag time of lessthan 1 second, less than 500 milliseconds, less than 300 milliseconds,less than 100 milliseconds, less than 50 milliseconds, or less than 25milliseconds), between the user inputting the keystrokes and therendering of the altered text characters on the display. FIG. 9 shows anexample rendering of the at least partially altered text characters. Asshown, text characters within certain words have different font stylesthan the other text characters forming the same word. For example, theword “generate” is rendered have some text characters italicized and notbolded, while other text characters are bolded but not italicized.

FIG. 7 is a schematic showing a digital variable font system 100 (i.e.,a system for altering the depiction of digital text input by a user)according to an exemplary embodiment of the present technology. Thesystem 100 includes a computing device 110 having a keyboard 120, aprocessor 130, and a display 150. A user inputs keystrokes via thekeyboard 120, which communicates signals representing the keystrokes tothe processor 130. The processor 130 includes a computer readable mediumthat has software instructions stored thereon that, when executed by theprocessor 130, cause the processor 130 to perform the method 10described above via a variable font algorithm 140. The system 100renders the at least partially altered text characters resulting fromexecuting the variable font algorithm 140 on the display 150. In someembodiments, the keyboard 120 is a virtual keyboard, and the keyboard120 and the display 150 are integrated together as part of the computingdevice 110, such as a smartphone, tablet, etc. In some embodiments, thekeyboard 120 is a physical keyboard, and the keyboard 120 and thedisplay 150 are separate components of the computing device 110, such asdesktop computer, laptop computer, etc.

FIG. 8 is a schematic showing a digital variable font system 200 (i.e.,a system for altering the depiction of digital text input by a user)according to an exemplary embodiment of the present technology. Thesystem 200 includes a computing device 210 having a keyboard 220 and adisplay 230. A user inputs keystrokes via the keyboard 220, whichcommunicates signals representing the keystrokes to a server 250 via acommunication network 240. The server 250 has a processor 260 thatincludes a computer readable medium that has software instructionsstored thereon that, when executed by the processor 260, cause theprocessor 260 to perform the method 10 described above via a variablefont algorithm 270. The server 250 communicates, via the communicationnetwork 240, the at least partially altered text characters forrendering on the display 230 of the computing device 210 and/or to oneor more external displays 280 (e.g., a display of a computing device ofone or more second users receiving the altered text characters as, e.g.,a text message, a social media post, etc.). In some embodiments, thekeyboard 220 is a virtual keyboard, and the keyboard 220 and the display230 are integrated together as part of the computing device 210, such asa smartphone, tablet, etc. In some embodiments, the keyboard 220 is aphysical keyboard, and the keyboard 220 and the display 230 are separatecomponents of the computing device 220, such as desktop computer, laptopcomputer, etc. In some embodiments, the communication network 240 is awired or wireless Internet, intranet, wide area network, local areanetwork, or any other type of network or Internet known in the art.

Although the technology has been described and illustrated with respectto exemplary embodiments thereof, it should be understood by thoseskilled in the art that the foregoing and various other changes,omissions, and additions may be made therein and thereto, withoutparting from the spirit and scope of the present technology.

What is claimed is:
 1. A method of altering the depiction of digitaltext input by a user, the method comprising: receiving a set ofkeystrokes on a keyboard input by the user, the set of keystrokescomprising a plurality of text characters configured to be rendered on adisplay in communication with the keyboard; determining a keystrokedynamics of the user based on the set of keystrokes, the keystrokedynamics comprising time-of-flight data and dwell time data for eachkeystroke of the set of keystrokes; analyzing the set of keystrokes withthe keystroke dynamics to determine the hand dominance of the user andto generate a keystroke score for each keystroke of the set ofkeystrokes; altering at least a portion of the text characters based onthe analysis of the set of keystrokes with the keystroke dynamics; andrendering the at least partially altered text characters on the display.2. The method of claim 1, wherein determining the hand dominance of theuser comprises calculating a ratio of actual overlapping keystrokes topotential overlapping keystrokes for the left hand and the right hand ofthe user.
 3. The method of claim 2, wherein the actual overlappingkeystrokes are based, at least in part, on the time-of-flight data. 4.The method of claim 2, wherein the potential overlapping keystrokes arebased, at least in part, on a series of di-graphs for sequentialkeystrokes.
 5. The method of claim 2, wherein the potential overlappingkeystrokes are based, at least in part, on a series of tri-graphs forsequential keystrokes.
 6. The method of claim 2, wherein determining theactual overlapping keystrokes and the potential overlapping keystrokescomprises: determining, for each keystroke, if the keystroke is in aleft-hand location of the keyboard, a right-hand location of thekeyboard, or a middle location of the keyboard; recording a potentialoverlap if the keystroke is in the left-hand location or the right-handlocation and the preceding keystroke is in the same location;determining, if a potential overlap was recorded, if an active keypresslist has a value greater than one; and recording an actual overlap ifthe active keypress list has a value greater than one and no releasetime.
 7. The method of claim 1, wherein the keystroke score for eachkeystroke of the set of keystrokes is based, at least in part, on acombination of di-graphs and tri-graphs.
 8. The method of claim 1,wherein the keystroke score for each keystroke of the set of keystrokesis based, at least in part, on the typing speed of the user.
 9. Themethod of claim 1, wherein generating the keystroke score for eachkeystroke of the set of keystrokes comprises: capturing, for eachkeystroke, a press time; and performing a weight mapping function oneach keystroke and its respective press time to determine the outputtedtypeface weight of each keystroke.
 10. The method of claim 8, whereinthe weight mapping function comprises: analyzing each keystroke todetermine if a lapse in typing occurred; resetting, if a lapse in typingis detecting, a press time of the first keystroke in a sequence ofkeystrokes of the set of keystrokes to when the lapse occurred andresetting a total number of keystrokes in the sequence of keystrokes toone; calculating a global typing speed of the user for the set ofkeystrokes; calculating a local typing speed of the user for thesequence of keystrokes; calculating individual typing speeds of the userfor each keystroke; generating an overall typing speed of the userbased, at least in part, on the global typing speed, the local typingspeed, and the individual typing speeds; and determining the outputtingtypeface weight of each keystroke based, at least in part, on theoverall typing speed.
 11. The method of claim 10, wherein the globaltyping speed comprises an average typing speed for the set ofkeystrokes, a variance in typing speeds for the set of keystrokes, and acurrent typing speed.
 12. The method of claim 10, wherein the localtyping speed comprises an average typing speed for the sequence ofkeystrokes, a variance in typing speeds for the sequence of keystrokes,and a current typing speed.
 13. The method of claim 10, wherein eachindividual typing speed comprises an average typing speed for allinstances that each keystroke was pressed, a variance in the typingspeeds for all instances that each keystroke was pressed, and a currenttyping speed.
 14. The method of claim 1, wherein the keystroke score foreach keystroke of the set of keystrokes is based, at least in part, onthe dwell time of each keystroke.
 15. The method of claim 1, whereinanalyzing the set of keystrokes with the keystroke dynamics furthercomprises determining a custom interpolation axis.
 16. The method ofclaim 15, wherein the custom interpolation axis comprises a charactergrade axis configured to change the font weight of the text characterswithout changing the font width of the text characters.
 17. The methodof claim 1, wherein analyzing the set of keystrokes with the keystrokedynamics further comprises determining at least one of font size ofkerning of the text characters.
 18. The method of claim 1, whereinanalyzing the set of keystrokes with the keystroke dynamics furthercomprises determining font variation settings of the text characters.19. The method of claim 1, wherein the text characters are altered anddisplayed in real-time as the user inputs the keystrokes.
 20. A systemfor altering the depiction of digital text input by a user, the systemcomprising: a keyboard configured to receive a set of keystrokes inputby the user; a processor in communication with the keyboard, theprocessor configured to receive signals representing the set ofkeystrokes from the keyboard and perform the method of claim 1 via avariable font algorithm; and a display in communication with theprocessor for rendering the at least partially altered text characters.